//package com.card.game;
//
//import java.util.List;
//import java.util.Set;
//import java.util.Vector;
//
//import com.google.common.collect.ImmutableList;
//import com.google.common.collect.Lists;
//import com.google.common.collect.Sets;
//
///**   
// * @Description: TODO(用一句话描述该文件做什么) 
// * @author siyunlong  
// * @date 2016年10月10日 下午6:24:49 
// * @version V1.0   
// */
//public class KdUtils2 {
//	public static List<Card> getOutCardForTing(Vector<Card> cards,boolean haveFeng) {
//		Set<Card> setCard = Sets.newHashSet();
//		List<Card> outs = Lists.newArrayList();
//		for (int i = 0; i < cards.size(); i++) {
//			Vector<Card> clone = (Vector<Card>)cards.clone();
//			Card c = clone.remove(i);
//			if(setCard.contains(c)) continue;
//			if(isCanTingForCard(clone,haveFeng)) {
//				outs.add(c);
//			}
//			setCard.add(c);
//		}
//		setCard.clear();
//		return outs;
//	}
//	
//	private static boolean isCanTingForCard(Vector<Card> cards,boolean haveFeng) {
//		for (int i = CardType.WAN; i <= CardType.BING; i++) {
//			for (int j = 6; j < 10; j++) {
//				Card c = new Card(i, j);
//				if(isHu(cards, c,haveFeng)) {
//					return true;
//				}
//			}
//		}
//		for (int i = CardType.DONG; i <= CardType.BEI; i++) {
//			Card c = new Card(i, 0);
//			if(isHu(cards, c,haveFeng)) {
//				return true;
//			}
//		}
//		for (int j = 1; j < 4; j++) {
//			Card c = new Card(CardType.Jian, j);
//			if(isHu(cards, c,haveFeng)) {
//				return true;
//			}
//		}
//		return false;
//	}
//	public static List<Card> getTingCards(Vector<Card> cards,boolean haveFeng) {
//		List<Card> tings = Lists.newArrayList();
//		for (int i = CardType.WAN; i <= CardType.BING; i++) {
//			for (int j = 4; j < 10; j++) {
//				Card c = new Card(i, j);
//				if(isHu(cards, c,haveFeng)) {
//					tings.add(c);
//				}
//			}
//		}
//		for (int i = CardType.DONG; i <= CardType.BEI; i++) {
//			Card c = new Card(i, 0);
//			if(isHu(cards, c,haveFeng)) {
//				tings.add(c);
//			}
//		}
//		for (int j = 1; j < 4; j++) {
//			Card c = new Card(CardType.Jian, j);
//			if(isHu(cards, c,haveFeng)) {
//				tings.add(c);
//			}
//		}
//		return tings;
//	}
//	public static boolean isHu(Vector<Card> cards,Card temp,boolean haveFeng) {
//		Vector<Card> clone = (Vector<Card>)cards.clone();
//		clone.add(temp);
//		return HandUtils.isHuPai(clone);
//	}
//	
//	private static boolean isSameType(Vector<Card> sours,int type) {
//		for (Card card : sours) {
//			if(card.getType() != type) {
//				return false;
//			}
//		}
//		return true;
//	}
//	
//	public static boolean isQingyise(Vector<Card> sours) {
//		for (int i = CardType.WAN; i <= CardType.BING; i++) {
//			if(isSameType(sours, i)) {
//				return true;
//			}
//		}
//		return false;
//	}
//	
//	private static boolean isTiaoLong(Vector<Card> sours,int type) {
//		for (int j = 1; j < 10; j++) {
//			if(!sours.contains(new Card(type, j))) {
//				return false;
//			}
//		}
//		return false;
//	}
//	public static boolean isTiaoLong(Vector<Card> sours) {
//		for (int i = CardType.WAN; i <= CardType.BING; i++) {
//			if(isTiaoLong(sours, i)) {
//				return true;
//			}
//		}
//		return false;
//	}
//	
//	public static boolean isDaDui(Vector<Card> sours) {
//		if(sours.size() != 14 || !HandUtils.allIsDui(sours)) {
//			return false;
//		}
//		Vector<Card> sour = (Vector<Card>)sours.clone();
//		Vector<Hand> same4 = CardUtils.findSameCardBySize(sour, 4);
//		return !same4.isEmpty();
//	}
//	public static final ImmutableList<Card> FengCards = ImmutableList
//			.of(new Card(4,0),new Card(5,0),new Card(6,0),new Card(7,0),new Card(8,1),new Card(8,2),new Card(8,3));
//	private static final ImmutableList<Card> Yaos = ImmutableList
//	.of(new Card(4,0),new Card(5,0),new Card(6,0),new Card(7,0),new Card(8,1),new Card(8,2),new Card(8,3),
//			new Card(1,1),new Card(1,9),
//			new Card(2,1),new Card(2,9),
//			new Card(3,1),new Card(3,9));
//	
//	public static boolean is13Yao(Vector<Card> sours) {
//		Vector<Card> sour = (Vector<Card>)sours.clone();
//		for (Card card : Yaos) {
//			sour.remove(card);
//		}
//		if(sour.size() != 1) {
//			return false;
//		}
//		return Yaos.contains(sour.get(0));
//	}
//	
//	public static void main(String[] args) {
////		while(true) {
////			Vector<Card> allCards = CardUtils.createSHRoomCards(false);
////			Vector<Card> outCard = CardUtils.faPaiToVector(allCards, 14);
////			Collections.sort(outCard);
////			List<Card> outs = getOutCardForTing(outCard);
////			if(!outs.isEmpty()) {
////				CardUtils.printCards(outCard);
////				CardUtils.printCards(new Vector<>(outs));
////				for (Card card : outs) {
////					System.err.println("out:"+card.toString());
////					Vector<Card> clone = (Vector<Card>)outCard.clone();
////					clone.remove(card);
////					CardUtils.printCards(new Vector<>(getTingCards(clone)));
////				}
////				break;
////			}
////		}
//	}
//}
